Practice: Debouncer
Soluția se află în repo-ul materiei GitHub.
- Se dorește proiectarea unui automat finit capabil să recunoască secvențe de tip "ba". Automatul primește la intrare în mod continuu caractere codificate printr-un semnal de un bit (caracterele posibile sunt "a" și "b"). Ieșirea automatului va consta dintr-un semnal care va fi activat (valoarea 1) atunci când la intrare am avut prezent un șir care se potrivește cu tiparul de căutare.
- Implementați automatul în Verilog.
- Hint: Realizați pe hârtie schema automatului de stări, pentru a o folosi ulterior ca referință.
- Simulați automatul folosind modulul de test din scheletul de cod. Eliminați semnalele nerelevante (is și count) din diagrama de semnale. Adăugați starea automatului și starea următoare a automatului la diagrama de semnale.
- Hint: Semnalele pot fi eliminate din diagrama de semnale cu click dreapta->Delete pe semnalul care se dorește a fi eliminat.
- Hint: Semnale noi pot fi adăugate la diagrama de semnale prin drag-and-drop din fereastra Simulation Objects for ..., care conține toate semnalele modulului selectat în fereastra Instance and Process Name.
- Hint: Simularea trebuie repornită prin Simulation->Restart urmat de Simulation->Run pentru a vedea comportamentul semnalelor adăugate.
- Urmăriți diagrama de semnale și codul automatului și explicați comportamentul. Urmăriți și explicați funcționarea modulului de test.
- Implementați automatul în Verilog.
- Se dorește realizarea unei treceri de pietoni semaforizate. Duratele de timp pentru cele 2 culori vor fi: roșu - 60 sec, verde - 30 sec.
- Implementați și simulați în Verilog automatul necesar. Ce rol are modulul trecere din fișierul trecere.v?
- Explicați codul numărătorului din fișierul counter.v.
- Hint: Urmăriți comportarea acestuia pe diagrama de semnale.